"""
    线程是进程的一部分, 多个线程共享一个进程资源,但是CPU执行的核心数可能是多个核心
        进程是操作系统中资源分配的基本单位。进程是操作系统对正在运行程序的一种抽象，
            可以将进程看作程序的一次运行。
        
        线程：线程是操作系统中CPU调度执行的基本单位。一个线程是一个“执行流”，
            每个线程之间都可以按照顺序执行自己的代码，多个线程“同时”执行多份代码。
        
        CPU进程无法同时刻共享，但是出现一定要共享CPU的需求呢？此时线程的概念就出现了。
            线程被包含在进程当中，进程的不同线程间共享CPU和程序上下文。（共享进程分配到的资源）
            
    使用方法:
        1. 封装线程函数
        2. 创建线程对象 t = threading.Thread(target=music)
        3. 启动线程  t.start()
        4. 回收线程  t.join()
    属性:
        查看线程数：
        使用threading.enumerate()函数便可以看到当前线程的数量。
        其他方法
        Thread实例对象的方法
        t.isAlive()  返回线程是否活动的。
        t.getName()  返回线程名。
        t.setName()  设置线程名。
        t.name  线程名称

        threading 模块提供的一些方法
        threading.currentThread(): 返回当前的线程变量。
        threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前，不包括启动前和终止后的线程。
        threading.activeCount(): 返回正在运行的线程数量，与len(threading.enumerate())有相同的结果。

        查看当前线程的名字：
        使用threading.current_thread()可以看到当前线程的信息。
"""

import threading
from time import sleep
import os

a = 1

# 封装线程函数
def music():
    for i in range(3):
        sleep(1)
        print("播放: 好日子")
    
    global a # 声明a是全局变量的a,不是局部变量的
    a = 100  # 所有子线程共享一个进程的资源, 所有能夸线程访问

# 创建线程对象
t = threading.Thread(target=music)
t.start()
t.join()

print(a)
